4da35fab98941f1ca9f2ac7efd38a18d3bc1f47e,hawkular-alerts-engine/src/main/java/org/hawkular/alerts/engine/impl/CassAlertsServiceImpl.java,CassAlertsServiceImpl,getEvents,#String#EventsCriteria#Pager#,971

Before Change


                if (criteria.hasCategoryCriteria()) {
                    Set<String> idsFilteredByCategory = filterByCategories(tenantId, criteria);
                    if (activeFilter) {
                        eventIds.retainAll(idsFilteredByCategory);
                        if (eventIds.isEmpty()) {
                            return new Page<>(events, pager, 0);
                        }

After Change


        }

        List<Event> events = new ArrayList<>();
        Set<String> eventIds = new HashSet<>();
        boolean activeFilter = false;

        try {
            if (filter) {
                /*
                    Get eventIds explicitly added into the criteria. Start with these as there is no query involved
                 */
                if (criteria.hasEventIdCriteria()) {
                    Set<String> idsFilteredByEvents = filterByEvents(criteria);
                    if (activeFilter) {
                        eventIds.retainAll(idsFilteredByEvents);
                    } else {
                        eventIds.addAll(idsFilteredByEvents);
                    }
                    if (eventIds.isEmpty()) {
                        return new Page<>(events, pager, 0);
                    }
                    activeFilter = true;
                }

                /*
                    Get eventIds via tags
                 */
                if (criteria.hasTagCriteria()) {
                    Set<String> idsFilteredByTags = getIdsByTags(tenantId, TagType.EVENT, criteria.getTags());
                    if (activeFilter) {
                        eventIds.retainAll(idsFilteredByTags);
                    } else {
                        eventIds.addAll(idsFilteredByTags);
                    }
                    if (eventIds.isEmpty()) {
                        return new Page<>(events, pager, 0);
                    }
                    activeFilter = true;
                }

                /*
                    Get eventIds filtered by triggerIds clause
                 */
                if (criteria.hasTriggerIdCriteria()) {
                    Set<String> idsFilteredByTriggers = filterByTriggers(tenantId, criteria);
                    if (activeFilter) {
                        eventIds.retainAll(idsFilteredByTriggers);
                    } else {
                        eventIds.addAll(idsFilteredByTriggers);
                    }
                    if (eventIds.isEmpty()) {
                        return new Page<>(events, pager, 0);
                    }
                    activeFilter = true;
                }

                /*
                    Get eventtIds filtered by time clause
                 */
                if (criteria.hasCTimeCriteria()) {
                    Set<String> idsFilteredByTime = filterByCTime(tenantId, criteria);
                    if (activeFilter) {
                        eventIds.retainAll(idsFilteredByTime);
                    } else {
                        eventIds.addAll(idsFilteredByTime);
                    }
                    if (eventIds.isEmpty()) {
                        return new Page<>(events, pager, 0);
                    }
                    activeFilter = true;
                }

                /*
                   Below this point we prefer manual filtering if the result set is small enough. If so, fetch the
                   events now and filter manually. Otherwise, don't fetch and perform further filtering by query.
                */
                if (activeFilter && (eventIds.size() <= noQuerySize)) {
                    fetchEvents(tenantId, eventIds, thin, events);
                }

                if (criteria.hasCategoryCriteria()) {
                    if (events.isEmpty()) {
                        // filter by query and intersection
                        Set<String> idsFilteredByCategory = filterByCategories(tenantId, criteria);
                        if (activeFilter) {
                            eventIds.retainAll(idsFilteredByCategory);
                        } else {
                            eventIds.addAll(idsFilteredByCategory);
                        }